package restaurant;

import java.util.Date;

/**
 * The Manager UI allows the manager to interact with the restaurant system.
 * 
 * @author Odessa
 */

public class ManagerUI extends UserUI
{

	/**
	 * Instantiates a the manager user interface.
	 */
	public ManagerUI() {
		super();
	}



	/**
	 * Gets the entire menu.
	 * 
	 * @return the entire menu.
	 */
	public String getMenu()
	{
		return system.getMenu();
	}



	/**
	 * Gets the menu by course.
	 * 
	 * @param course the course by which to view the menu.
	 * @return the menu based on the {@code course} entered.
	 */
	public String getMenuByCourse(String course)
	{
		return system.getMenuByCourse(course);
	}



	/**
	 * Gets the menu by preparation time.
	 * 
	 * @param time the preparation time by which to view the menu.
	 * @return the menu based on the {@code prepTime} entered.
	 */
	public String getMenuByPrepTime(int time)
	{
		return system.getMenuByPrepTime(time);
	}



	/**
	 * Gets the menu by price.
	 * 
	 * @param price the price by which to view the menu.
	 * @return the menu by price based on the {@code price} entered.
	 */
	public String getMenuByPrice(int price)
	{
		return system.getMenuByPrice(price);
	}



	/**
	 * Gets the menu by rating.
	 * 
	 * @param rating the rating by which to view the menu.
	 * @return the menu based on the {@code rating} entered.
	 */
	public String getMenuByRating(int rating)
	{
		return system.getMenuByRating(rating);
	}



	/**
	 * Gets the vegetarian menu.
	 * 
	 * @return the menu containing only vegetarian items.
	 */
	public String getMenuByVegetarian()
	{
		return system.getMenuByVegetarian();
	}



	/**
	 * Adds a new item to the menu.
	 * 
	 * @param name the name of the item.
	 * @param description the description of the item.
	 * @param price the price of the item.
	 * @param prepTime the time to prepare the item.
	 * @param course the item's course.
	 * @param vegetarian whether or not this item is vegetarian.
	 * @return the newly created menu item.
	 */
	public String addMenuItem(String name, String description, double price,
			int prepTime, String course, boolean vegetarian)
	{
		return system.addMenuItem(name, description, price, prepTime, course,
				vegetarian);
	}



	/**
	 * Updates a menu item.
	 * 
	 * @param item the item
	 * @param newName the new name of the item.
	 * @param newDesc the new description of the item.
	 * @param newPrice the new price of the item.
	 * @param newTime the new preparation time of the item.
	 * @param newCourse the new course of the item.
	 * @param newVeg whether or not this item is vegetarian.
	 * @return the updated menu item.
	 */
	public String updateMenuItem(int item, String newName, String newDesc,
			double newPrice, int newTime, String newCourse, boolean newVeg)
	{
		return system.updateMenuItem(item, newName, newDesc, newPrice, newTime,
				newCourse, newVeg);
	}



	/**
	 * Sets the number of an item that is available for the evening.
	 * 
	 * @param item the item number of the item.
	 * @param numAvailable the number of the item available.
	 */
	public void setAvailability(int item, int numAvailable)
	{
		system.setAvailability(item, numAvailable);
	}



	/**
	 * Adds a new offer.
	 * 
	 * @param startDate the start date of the offer.
	 * @param endDate the end date of the offer.
	 * @param description the description of the offer.
	 * @param discount the discount of the offer.
	 * @return the newly created offer.
	 */
	public String addOffer(Date startDate, Date endDate, String description,
			double discount)
	{
		return system.addOffer(startDate, endDate, description, discount);
	}



	/**
	 * Updates an offer.
	 * 
	 * @param offer the offer being updated.
	 * @param newStart the new start date of the offer.
	 * @param newEnd the new end date of the offer.
	 * @param newDesc the new description of the offer.
	 * @param newDiscount the new discount provided by the offer.
	 * @return the updated offer.
	 */
	public String updateOffer(int offer, Date newStart, Date newEnd,
			String newDesc, double newDiscount)
	{
		return system
				.updateOffer(offer, newStart, newEnd, newDesc, newDiscount);
	}



	/**
	 * Deletes an offer.
	 * 
	 * @param offer the offer being deleted.
	 */
	private void deleteOffer(int offer)
	{
		system.deleteOffer(offer);
	}



	/**
	 * View the ratings for an item.
	 * 
	 * @param item the item to view the ratings for.
	 * @return the ratings of this item.
	 */
	private String viewRatings(int item)
	{
		return system.viewRatings(item);
	}



	/**
	 * View the comments submitted by the customers.
	 * 
	 * @return the comments.
	 */
	private String viewComments()
	{
		return system.viewComments();
	}



	/**
	 * View the gross sales for a day.
	 * 
	 * @param day the day to view the sales for.
	 * @return the gross sales for this day.
	 */
	private String viewGrossSales(Date day)
	{
		return system.viewGrossSales(day);
	}



	/**
	 * View the gross sales for a period.
	 * 
	 * @param start the start date of the period.
	 * @param end the end date of the period.
	 * @return the gross sales for this period.
	 */
	private String viewGrossSales(Date start, Date end)
	{
		return system.viewGrossSales(start, end);
	}



	/**
	 * View the items sold for a day.
	 * 
	 * @param day the day to view the items sold for.
	 * @return the items sold for this day.
	 */
	private String viewItemsSold(Date day)
	{
		return system.viewItemsSold(day);
	}



	/**
	 * View the items sold for a period.
	 * 
	 * @param start the start date of the period.
	 * @param end the end date of the period.
	 * @return the items sold for this period
	 */
	private String viewItemsSold(Date start, Date end)
	{
		return system.viewItemsSold(start, end);
	}



	/**
	 * View the average pick up time.
	 * 
	 * @param waitperson the waitperson
	 * @return the average pick up time.
	 */
	private String viewAvgPickUpTime(int waitperson)
	{
		return system.viewAvgPickUpTime(waitperson);
	}



	/**
	 * View the kitchen queue.
	 * 
	 * @return the kitchen queue.
	 */
	private String viewKitchenQueue()
	{
		return system.viewKitchenQueue();
	}



	/**
	 * View the available tables.
	 * 
	 * @return the available tables.
	 */
	public String viewAvailableTables()
	{
		return system.viewAvailableTables();
	}



	/**
	 * View the customer wait queue.
	 * 
	 * @return the customer wait queue.
	 */
	private String viewCustomerWaitQueue()
	{
		return system.viewCustomerWaitQueue();
	}



	/**
	 * View occupied tables.
	 * 
	 * @return the occupied tables.
	 */
	public String viewOccupiedTables()
	{
		return system.viewAssignedTables();
	}



	/**
	 * View the offers.
	 * 
	 * @return the offer.
	 */
	public String viewOffers()
	{
		return system.viewOffers();
	}



	/**
	 * View the orders.
	 * 
	 * @return the orders.
	 */
	private String viewOrders()
	{
		return system.viewOrders();
	}



	/**
	 * View tables waiting on their order to be delivered.
	 * 
	 * @return the tables waiting on their order to be delivered.
	 */
	public String viewWaitingTables()
	{
		return system.viewWaitingTables();
	}
}
